Gesture-Based Wireless Media Streaming System

ABSTRACT

While a client device is playing a media program, the client device may be configured to detect a gesture with a gesture input interface of the client device. In response to detecting the gesture, the client device may identify, on the client device, a time point at which the client device stops playing the media program, and send a streaming request to a media streaming device to stream at least a portion of the media program to a second client device. The portion of the media program includes media content starting from the time point at which the client device stops playing the media program.

CROSS REFERENCE TO RELATED APPLICATIONS AND PRIORITY CLAIM

This application claims priority of Provisional Application Ser. No.61/777,981, filed Mar. 12, 2013, the entire contents of which are herebyincorporated by reference as if fully set forth herein, under 35 U.S.C.§120.

This application is related to Provisional U.S. Patent Application No.61/696,747 filed on Sep. 4, 2012 (with Attorney Docket No. 60097-0924),which is hereby incorporated herein by reference for all purposes as iffully set forth herein.

FIELD OF THE INVENTION

The present invention relates to processing media data. Specifically,the invention relates to wireless media streaming.

BACKGROUND

The approaches described in this section are approaches that could bepursued, but not necessarily approaches that have been previouslyconceived or pursued. Therefore, unless otherwise indicated, it shouldnot be assumed that any of the approaches described in this sectionqualify as prior art merely by virtue of their inclusion in thissection.

Media devices used at homes or other locations may be used for differentpurposes. For example, multiple digital video recorders may be used toreceive programs from over-the-air broadcasts, satellite broadcasts,cable channels, internet-based video downloads, stored shows, etc.Personal computing devices such as smartphones, tablet computers,laptops, desktops, etc., may be used to perform internet downloading andplaying, social networking, word processing, emailing, etc. It is oftendifficult for a user to use one device to access media programs on adifferent device, even though both devices may be connected in closeproximity at the same location or over networks more or less controlledby the same user. Additionally, since many media programs are notcopyright free and are subject to various legal restrictions regardingdigital media playing, recording and distributing, etc., it is oftendifficult for such media programs to be accessed and enjoyed usingfamiliar menu interfaces in a consistent manner that protects underlyingdigital rights of the media programs.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention is illustrated by way of example, and not by wayof limitation, in the figures of the accompanying drawings and in whichlike reference numerals refer to similar elements and in which:

FIG. 1 illustrates an example configuration for performing streamingmultimedia content between multimedia and client devices, in accordancewith an embodiment;

FIG. 2 illustrates an example network configuration, in accordance withan embodiment;

FIG. 3 illustrates example streams, in accordance with one or moreembodiments;

FIG. 4A illustrates an example digital video recorder that be used toimplement automatic rate control, in accordance with one or moreembodiments;

FIG. 4B illustrates example modules in a client device, in accordancewith one or more embodiments;

FIG. 5 illustrate example process flows, in accordance with one or moreembodiments; and

FIG. 6 shows a block diagram that illustrates a system upon which anembodiment of the invention may be implemented.

DETAILED DESCRIPTION

In the following description, for the purposes of explanation, numerousspecific details are set forth in order to provide a thoroughunderstanding of the present invention. It will be apparent, however,that the present invention may be practiced without these specificdetails. In other instances, well-known structures and devices are shownin block diagram form in order to avoid unnecessarily obscuring thepresent invention.

Several features are described hereafter that can each be usedindependently of one another or with any combination of the otherfeatures. However, any individual feature might not address any of theproblems discussed above or might only address one of the problemsdiscussed above. Some of the problems discussed above might not be fullyaddressed by any of the features described herein. Although headings areprovided, information related to a particular heading, but not found inthe section having that heading, may also be found elsewhere in thespecification.

Example features are described according to the following outline:

-   -   1.0 FUNCTIONAL OVERVIEW    -   2.0 SYSTEM ARCHITECTURE    -   3.0 MEDIA PROGRAM STREAMING    -   4.0 GESTURE-BASED STREAMING    -   5.0 EXAMPLE MULTIMEDIA DEVICE    -   6.0 EXAMPLE PROCESS FLOW    -   7.0 HARDWARE OVERVIEW    -   8.0 EXTENSIONS AND ALTERNATIVES

1.0 Functional Overview

Techniques for gesture-based wireless media streaming as describedherein may be implemented in software components, hardware components,or a combination of software and hardware components.

A variety of media devices may be available for playing mediacontent/programs. A user may use a tablet computer to access internetmedia content; use a digital video recorder (DVR) to record and playbackinternet and broadcast programs; use a PC to store videos, photos,music, etc.; use a high-end home theater system to play/render mediacontent with superior audiovisual characteristics; etc.

These and other available devices may be connected via one or morerouters, access points, etc., over one or more of local networks, widearea networks, combinations of local networks or WANs, etc. A mediastreaming device may be used to allow a media device to act as a clientdevice to access and play media programs that are available to anothermedia device.

Two or more media devices may be configured with techniques as describedherein to support seamless playing of a media program among these mediadevices. One or more media devices may be configured with gesture inputinterfaces to detect gestures of users. Examples of gestures to bedetected by the gesture input interfaces include but are not limited to:flick motions (e.g., moving a finger to induce capacitance changes,resistance changes, other physical property changes, etc.), hoveringmotions (e.g., moving a finger or a hand to induce capacitance changes,other detectable physical property changes, etc.), device motions (e.g.,using gloves whose motions may be detected by device motion detectors),eye movements (e.g., looking at a different device or display, etc.),face movements (e.g., facing a different device or display, etc.), bodymotions (e.g., walking from one room to another room, etc.), etc.

For the purpose of illustration only, in discussing gesture-basedplaying of a media program among two or more media devices, referencemay be made to a client device equipped with a touch screen interfacethat is configured to detect flick motions by a user. For the purpose ofthe invention, any of other types of gestures may be used in place of,or in conjunction with, a flick motion type of gesture.

In some embodiments, while a user is watching or playing a media programon the client device (e.g., a handheld device with reasonable but notnecessarily high-end media rendering capabilities, etc.), the user maydecide to watch the media program on a second client device (e.g., ahigh-end home theater system, etc.). The media program being played at amedia device such as the client device, the second client device, etc.,may be stored on the media device. Additionally, alternatively, oroptionally, the media program being played at a media device such as theclient device, the second client device, etc., may be streamed to themedia device by a media streaming device from a multimedia device (e.g.,a DVR, etc.).

The user may use a gesture such as a flick motion, etc., to triggerswitching (including but not limited to switching back and forth) theplaying of the media program from one media device such as the clientdevice, etc., to another media device such as the second client device,etc. In some embodiments, such a flick motion may be preceded by anothergesture such as a hovering motion (which may help the client device orthe media streaming device to narrow down the interpretation of theflick motion to specifically a user command to switch playing the mediaprogram from one media device to a different media device).

The client device or the media streaming device may be configured todetermine, identify, and/or select the second client device. Forexample, the media streaming device, the client device, etc., may beconfigured with device location information manually, programmatically,dynamically, etc. Based on the device location information, the mediastreaming device, the client device, etc., may be configured todetermine, identify, and/or select the second client device to switchthe playing of the media program to. For example, a media device towhich the playing of the media program is to switch may be determined tobe presently located near (e.g., in the same room, etc.) the currentmedia device at which the media program is being played.

Techniques as described herein may be implemented to allow a mediadevice such as the second client device to resume playing the mediaprogram from a time point (e.g., 30 minutes into the media program, aspecific number of media frames into the media program, etc.) at whichthe media program the current media device such as the client devicestops playing the media program. In the present example, in response todetecting the flick motion, the client device identifies, on the clientdevice, a time point at which the client device is to stop playing themedia program. Subsequently, the client device sends a streaming requestto a media streaming device to stream the media program to the secondclient device from the identified time point in the media program.

In some embodiments, the second client device may be identified amongone or more client devices other than the client device by the clientdevice, based on a direction of the gesture. The streaming request sentby the client device to the media streaming device may indicate thesecond client device to the streaming device.

In some embodiments, the user's gesture may carry directionalinformation that a client device or a media streaming device can use todetermine, identify, or select a target media device for playingsubsequently the media program.

At the time of switching playing of a media program from one mediadevice to another media device, the media program may be played in aspecific playing mode at the former of the media devices. A streamingrequest that causes switching the playing of the media program betweenthe media devices can indicate the specific playing mode. Thus, thelatter of the media devices may continue playing the media program atthe specific playing mode. Such a playing mode includes any of a varietyof trick playing modes.

A user may continuously control playing of a media program even afterthe media program has been switched playing to one or more other mediadevices. In the present example, the client device may continue toaccept user commands, which may or may not be gesture-based, to controlthe streaming and playing of the media program to the second clientdevice and/or subsequent devices. The client device can cause a usercommand to be sent to any of these media devices directly or by way ofthe media streaming device.

A media program may also be concurrently played at a media device, whilebeing streamed to another media device. In the present example, theclient device may continue playing the media program while the mediaprogram is being streamed from the multimedia device to the secondclient device.

Different media devices may have different capabilities in supportingcoding formats of media data. A media program rendered by the clientdevice may be encoded in a first format which the client device isconfigured to decode but which the second client device is notconfigured to decode. Transcoding may be performed by one or more ofavailable media devices. For example, transcoding between the two codingformats may be performed as a part of streaming a media program by amedia streaming device, a client device, a DVR from which the mediaprogram is sourced, etc.

A media device as described herein may be one or more of tabletcomputers, handheld devices, laptops, e-readers, personal computingdevices, game devices, or display systems, whereas the second device isa different one of tablet computers, handheld devices, laptops,e-readers, personal computing devices, game devices, or display systems.

In some embodiments, a network connection among, the client device, thestreaming device and the second client device comprises at least onewireless network link.

2.0 System Architecture

Although a specific computer architecture is described herein, otherembodiments of the invention are applicable to any architecture that canbe used to perform the functions described herein.

FIG. 1 illustrates an example configuration for performing streamingmultimedia content between multimedia devices (e.g., one or more of108-1 through 108-N, where N is an integer greater than one) and clientdevices (e.g., one or more of 106-1 through 106-M, where M is an integergreater than one), in accordance with an embodiment. A streaming device102 may be configured to receive one or more source media streams fromone or more of the multimedia devices (108-1 through 108-N) over a firstnetwork (104-1), to perform one or more stream transport operationsincluding but not limited to: converting the one or more source mediastreams into one or more client media streams, sending the one or moreclient media streams to one or more of the multimedia devices (108-1through 108-N) over a second network (104-2), etc.

Example multimedia devices include but are not limited to any of:digital video recorders (DVRs), home based computing devices configuredto send multimedia content in streams to recipient devices over networkconnections, media servers, set-top boxes, digital media receivers, etc.In some embodiments, all the multimedia devices (108-1 through 108-N) inFIG. 1 may be located in multiple rooms of a single location/buildingsuch as a home and connected to one or more local area networks (LANs).In some embodiments, at least two of the multimedia devices (108-1through 108-N) in FIG. 1 may be located in different locations/buildingsand connected to different LANs over a wide area network (WAN)connection. Example client devices include but are not limited to anyof: tablet computers, handheld devices, laptops, e-readers, personalcomputing devices, game devices, display systems, etc. Example networksinclude but not limited to any of: local area networks, wired orwireless networks, blue tooth networks, wide area networks, theinternet, intranets, extranets, dedicated links such as serial links,HDMI connections and USB connections, combinations of these and othernetworks and links, etc. In an example embodiment, the first network(104-1) and the second network (104-2) may constitute a single overall(e.g., home-based) network. In some embodiments, one or more of thefirst network (104-1) and the second network (104-2) may involve one ormore wireless networking links.

FIG. 2 illustrates an example network configuration, in accordance withan embodiment. In this illustrated embodiment, the streaming device(102) may be connected to a router (202) through a first connection(204-1), whereas the streaming device (102) may be operatively linked toa multimedia device (e.g., 108-1) through a second connection (204-2)provided by the router (202). In an example embodiment, the streamingdevice (102) may be operatively linked to a client device (e.g., 106-1)through a third connection (104-3) provided by the router (202). Themultimedia device (108-1) may, but is not limited to, be a DVR; theclient device (106-1) may, but is not limited to, be a tablet computer;and the router (202) may, but is not limited to, comprise wirelessaccess point (WAP) functionality. In non-limiting example embodiments,the streaming device (102) and the multimedia device (108-1) may beconnected to the router (202) in wired connections, whereas the client(106-1) may be connected to the router with a wireless connection. Inthese and other embodiments, connections (104-1 through 104-3)illustrated in FIG. 2 may be all wired, all wireless, or mixed wired andwireless connections.

3.0 Media Program Streaming

One or more of the multimedia devices (108-1 through 108-N), thestreaming device (102), the client devices (106-1 through 106-M), etc.,may be configured to support one or more (e.g., multi-room) streamingprotocols that allow the devices to share media through streaming overnetwork connections. As illustrated in FIG. 3, the streaming device(102) may receive a first stream (e.g., 300-1 of FIG. 3) of a mediaprogram from the multimedia device (108-1) using a streaming protocol ofa first type, generate a second stream (e.g., 300-2 of FIG. 3) of themedia program based on content data received in the first stream(300-1), and send the second stream (300-2) of the media program to theclient device (106-1) using a streaming protocol of a second type. Insome embodiments, the streaming protocol of the first type may be thesame as the streaming protocol of the second type. In some embodiments,at least two different types of streaming protocols may be used orconcurrently supported by a streaming device (e.g., 102); for example,the streaming protocol of the first type may be different from thestreaming protocol of the second type. Example streaming protocolsinclude but are not limited to: TiVo Multi-Room Streaming (MRS), HTTPLive Streaming (HLS), other standard or proprietary streaming protocols,etc. In a non-limiting example implementation, media content may bestreamed from a multimedia device (e.g., 108-1) to the streaming device(102) using the MRS protocol, whereas media content may be streamed fromthe streaming device (102) to a client device (e.g., 106-1) using theHLS protocol.

As used herein, “content in a stream of a media program” may be the sameas, or alternatively may be different than, the content of the mediaprogram from which the stream is derived or generated. In an example,when a media program is streamed for playing or recording in a normalplaying mode, content in a corresponding stream may be the same as thecontent of the media program. In another example, when the media programis streamed for playing or recording in a different mode other than thenormal playing mode, content in a corresponding stream may be different(e.g., a version adapted for trick play modes, time-wise or spatiallydownsampled/upsampled from the normal playing media program, etc.) fromthe content of the media program (e.g., as received from a broadcast ora broadband source, as retrieved from a persistent media data store,etc.). For example, in a trick play mode involving playing while fastforwarding or rewinding, content in a corresponding stream may be asub-sampled version and/or a time-reversed version of the content of themedia program.

In some embodiments, a stream as described herein may be configured todeliver content of a media program which content has been dynamicallyvaried from the content of the media program (e.g., as received from abroadcast or a broadband source, as retrieved from a persistent mediadata store, etc.) and specifically adapted for a particular playing mode(including but not limited to any of: normal playing modes at differenttime points, trick playing modes at different time points, etc.) at aclient device. Thus, at a particular time point of streaming a mediaprogram, the stream may carry a portion of content of the media programwithout skipping or repeating, but at a different time point ofstreaming of the media program, the stream may carry analtered/generated/adapted portion (e.g., with skipping, repeating,downsampling, upsampling, rate adapting, etc.) that is different from aportion of the media program from which the altered/generated portion isderived. In some embodiments, a stream between a multimedia device(e.g., 108-1) and a streaming device (102) may carry the content of themedia program without any skipping or repeating, but a correspondingstream (which corresponds to the stream between the multimedia device108-1 and the streaming device 102) between the streaming device (102)and the client device (106-1) may carry altered/generated/adaptedportions (e.g., with skipping, repeating, downsampling, upsampling, rateadapting, etc.) that are different from corresponding portions of themedia program from which the altered/generated/adapted portions arederived.

The speed at which a media program is streamed between devices may bethe same as the normal playing speed, or alternatively may be differentfrom the normal playing speed of the media program. A media program of acertain playing time duration (e.g., 2 hours) may be streamed by astreaming device (e.g., 102) from a multimedia device (e.g., 108-1) to aclient device (e.g., 106-1) in a time duration shorter (e.g., 10% of 2hours, several minutes, several seconds, etc.) than the certain playingtime duration, or alternatively longer (e.g., 200% of 2 hours, 3 hours,etc.) than the certain playing time duration. In some embodiments, thestreaming device (102) may be configured to prioritize two or morestreams in terms of downloading speeds based on one or more factors thatinclude but are not limited to operational modes that are beingsupported by the two or more streams, respectively. Fast forward playingmodes may be given the highest priority. Normal playing modes may begiven the next highest priority. Downloading without playing may begiven a lower priority than the foregoing priorities. Side-loading modes(downloading/or side-loading a program while playing another program)may be given some of the lowest priorities. The one or more factors mayalso include but are not limited to: types of media programs that arebeing streamed, etc. For example, a stream that is side-loading a mediaprogram to a client device may be placed on a lower priority and hencemay take a longer time to stream that another stream that is streaming alive broadcast, a media program, etc., to be played in the normalplaying mode at the same client device, at a different client device,etc.

The maximum number of streams which the streaming device (102) may beconfigured to be capable of concurrently supporting may be one, two,three, four, or more. For instance, the streaming device (102) may beconfigured to support four separate shows from one, two, three or fourmultimedia devices (e.g., 108-1 through 108-N) and separate interactions(including but not limited to individual trick playing modes for theseparate shows) with one, two, three or four client devices (e.g., 106-1through 106-M). In an example, a streaming device may concurrentlystream a media program from a multimedia device (108-1) to a clientdevice (106-1) at the same time while the streaming device (102) streamanother media program from the same multimedia device (108-1) or adifferent multimedia device (e.g., 108-2) to the same client device(106-1) or a different client device (106-2). In another example, astreaming device (102) may concurrently stream a media program from amultimedia device (108-1) to two or more client devices (e.g., 106-1,106-2, etc.) at the same time. In yet another example, a streamingdevice (102) may concurrently stream different portions—which may or maynot be overlapping—of a media program from two or more multimediadevices (e.g., 108-1, 108-2, etc.) to one, two or more client devices(e.g., 106-1, 106-2, etc.) at the same time.

The streaming device (102) may be configured to perform one or moreoperations related to device discovery, de-multiplexing, multiplexing,buffering, decryption, decoding, transcoding, encoding, encryption,time-wise resampling, spatial resampling, streaming, rate adaptation,resolution adaptation, etc.

A wide variety of standard-based or proprietary device discoverytechniques including but not limited to service discovery protocols, DNSservice discovery (DNS-SD), dynamic host configuration protocol (DHCP),etc., may be used by streaming, multimedia, and client devices todiscover other streaming, multimedia, and client devices. The streamingdevice (102) may be configured to discover multimedia devices (e.g.,108-1 through 108-N) and client devices (e.g., 106-1 through 106-M),exchange one or more credentials with the discovered devices, andestablish one or more trust levels with the discovered devices that maybe used in part to determine whether a particular user or device hasappropriate digital rights and/or authenticated identity to accessparticular programs. Similarly, any of the multimedia devices (108-1through 108-N) and the client devices (106-1 through 106-M) may beconfigured to discover, exchange credentials with, and establish trustlevels with, other devices.

A service or device discovery process involving media devices such asmultimedia devices (108-1 through 108-N), streaming devices (one ofwhich may be 102 of FIG. 1), client devices (106-1 through 106-M) mayimplement session based inter-device streaming. A session for streamingmay be associated with one or more timeouts. In some embodiments, astreaming device (e.g., 102) and/or a client device (106-1) may berequired to be defined/specified in the same account as a multimediadevice (e.g., 108-1), in order to stream media content from themultimedia device (108-1) to the client device (106-1) through thestreaming device (102). Additionally, optionally, or alternatively, astreaming device (e.g., 102) and/or a client device (106-1) may berequired to share the same digital certificate as a multimedia device(e.g., 108-1), in order to stream media content from the multimediadevice (108-1) to the client device (106-1) through the streaming device(102). The client device (106-1) may be required to present a validdigital certificate to the multimedia device (108-1), the streamingdevice (102), or a service associated with the digital certificate, inorder to request streaming certain (e.g., premium) media content.

A wide variety of cryptography techniques or security schemes includingbut not limited to the Data Encryption Standard (DES), the AdvancedEncryption Standard (AES), cryptographic hash functions such as MD5,SHA-1, SHA-2, SHA-3, private and public keys, etc., may be used forencryption/decryption of media content. A cryptography technique asdescribed herein may be implemented in hardware, software, a combinationof the two, etc. Streamed content (or content carried in a stream) maybe encrypted based on a shared secret between a stream sending deviceand a stream recipient device. One or more first cryptography techniquesmay be used to encrypt and decrypt streamed content between themultimedia device (108-1) and the streaming device (102). One or moresecond cryptography techniques may be used to encrypt and decryptstreamed content between the streaming device (102) and the clientdevice (102-1). In some embodiments, the one or more first cryptographytechniques are the same as the second cryptography techniques. In someembodiments, at least one of the one or more first cryptographytechniques is different from all of the one or more second cryptographytechniques. Additionally, optionally, or alternatively, in someembodiments, at least one of the one or more second cryptographytechniques is different from all of the one or more first cryptographytechniques. The streaming device (102) may be configured to decrypt awhole or a part of streamed content encrypted with the one or more firstcryptography techniques from the multimedia device (108-1), encrypts awhole or a part of a re-streamed content generated based on the streamedcontent received from the multimedia device (108-1), and send theencrypted re-streamed content to the client device (106-1).

A wide variety of coding techniques related to one or more of MPEG-2,MPEG-4, H.263, H.264, VP8, QuickTime, Adobe Flash, Windows Media, etc.,may be used for encoding/decoding of media content. A coding (e.g.,encoding, decoding, transcoding, etc.) technique as described herein maybe implemented in hardware, software, a combination of the two, etc. Afirst coding technique may be used to encode and decode streamed contentbetween the multimedia device (108-1) and the streaming device (102). Asecond coding technique may be used to encode and decode streamedcontent between the streaming device (102) and the client device(102-1). In some embodiments, the first coding technique is the same asthe second coding technique. In some embodiments, the first codingtechnique is different from the second coding technique. The streamingdevice (102) may be configured to transcode a whole or a part of thestreamed content in a first coding format from the multimedia device(108-1) into a second coding format and send the transcoded streamedcontent in the second coding format to the client device (106-1). Thesecond coding format may be one that the client device (108-1) has beenimplemented with hardware-based acceleration features. Alternatively,the second coding format may be one that the client device (108-1) hasbeen installed with supporting software packages.

In some embodiments, the streaming device (102) may delegate one or moreoperations related to transcoding to the multimedia device (108-1) orthe client device (106-1). In an example, the streaming device (102)requests the multimedia device (108-1) to transcode content of a mediaprogram from the first coding format to the second coding format at themultimedia device (108-1) and then streams the transcoded content of themedia program already in the second coding format to the streamingdevice (102). In another example, the streaming device (102) streams thestreamed content of a media program in the first coding format, asreceived from the multimedia device (108-1), to the client device(106-1). The client device (106-1) may be configured to make use of thestreamed content in the first coding format and/or to transcode thestreamed content into the second coding format.

Media programs (e.g., TV shows, movies, live broadcasts, etc.) mayrun/last for varying media time durations in the normal playing mode. Inan example, a TV show lasts 30 minutes in the normal playing mode andhence has a 30 minute media time duration. In another example, a movielasts 2 hours in the normal playing mode and hence has a 2 hour mediatime duration. In yet another example, a live broadcast has anundetermined media time duration until the broadcast is over. In someembodiments, the streaming device (102) is configured to receive a firststream (e.g., 300-1) of a media program from the multimedia device(108-1), and buffer/cache/store a certain portion of the media program(e.g., in a media data buffer 302). The portion of the media programbuffered on the streaming device (102) may represent the entire mediatime duration of the media program, or may represent only a subset ofthe entire media time duration of the media program. The portion of themedia program buffered on the streaming device (102) may already betranscoded into the second coding format, or may be still encoded in thefirst coding format, or may be transcoded into an intermediate codingformat. In some embodiments, the streaming device (102) may beconfigured with a remote buffering capability. In an example, thestreaming device is configured to use the multimedia device (108-1) tobuffer a portion (e.g., in the first coding format) of the media programunder streaming. In another example, the streaming device is configuredto use the client device (106-1) to buffer a portion (e.g., in thesecond coding format) of the media program under streaming.

In some embodiments, a buffered portion of a media program as describedherein may be used to support both normal and trick play modes, which isaccessible/operable on the client device (106-1) by a user. A normalplaying mode refers to the playing of media program at a normal speedwithout skipping or repeating video frames in the media program (whichmay be provided by a content provider). Trick play modes refer toplaying media programs in manners that skip or repeat some video framesin the media program.

In an example, if the client device (106-1) is showing a live broadcast,as received through a video tuner of the multimedia device (108-1) andstreamed through the streaming device (102), the client device (106-1)and/or the streaming device (102) may accumulate and buffer a (e.g.,thirty minute, etc.) portion of the live broadcast up to the currentwall clock time. The buffered portion of the live broadcast may be usedto support any of a normal playing mode at the current wall clock time,a normal playing mode at a time preceding the current wall clock time,one or more fast forward (1.2×, 1.5×, 1.8×, etc. of the normal playingspeed) playing modes at a time preceding the current wall clock time,one or more rewind playing modes from the current wall clock time backto a time at which the streamed content of the media program may befound in the buffered portion of the live broadcast, etc.

In another example, if the client device (106-1) is playing a non-livemedia program, as stored in the multimedia device (108-1) and streamedthrough the streaming device (102), the client device (106-1) and/or thestreaming device (102) may accumulate and buffer a (e.g., thirty minute,etc.) portion of encompassing a current playing position of the non-livemedia program on the client device (106-1). The buffered portion of thenon-live media program may be used to support any of a normal playingmode at the current playing position, a normal playing mode at adifferent time (e.g. a new current playing position) other than whatcorresponds to the current playing position, one or more fast forward(1.2×, 1.5×, 1.8×, etc. of the normal playing speed) playing modes withthe buffered portion of the non-live media program, one or more rewindplaying modes within the buffered portion of the non-live media program,etc.

In some embodiments, a client-centric streaming model may be used, inwhich a multimedia device (e.g., 108-1) may serve content of mediaprograms to a client device (e.g., 106-1) through a streaming device(e.g., 102) under direction of the client device (106-1), for example,after the streaming, multimedia and client devices (e.g., 102, 106-1,and 108-1) have discovered the presence of their respective otherdevices. Subsequently, requests and responses may be exchanged betweentwo or more of the client device (106-1), the streaming device (102),and the multimedia device (108-1). In some embodiments, other devicessuch as other multimedia devices (e.g., 108-2 through 108-N) and otherclient devices (e.g., 106-2 through 106-M), if any, may also be involvedin operations as described herein in similar or dissimilar manners. Someof the requests and responses may be generated based on user commands,or may be specified with user commands.

In some embodiments, streams of media programs from a streaming device(e.g., 102) to a client device (e.g., 106-1) are generated based onstreams of the media programs to the streaming device (102) frommultimedia device (e.g., 108-1 through 108-N). The client device (106-1)may exchange requests and responses with a multimedia device (e.g.,108-1) in one or more communication channels provided by or establishedwith the streaming device (102). Available programming information,metadata information (e.g., descriptive or textual information about amedia program that is being played or that is interesting to a user,information about actors, places, products, or objects appearing inmedia programs, etc.) relating to the media programs, etc., may beobtained by the client device (106-1) from the multimedia device (108-1)using one or more (e.g., non-streaming) requests and responses. In someembodiments, streaming requests from a client device (e.g., 106-1) areaddressed to a streaming device (e.g., 102), which in turn may invokeseparate streaming requests (corresponding to the streaming requestsfrom the client device 106-1) to one or more multimedia devices (108-1through 108-N).

The client device (106-1) may be configured to present screen displaysto, and to receive user commands from, a user. The user may navigateinteractively among the screen displays to specific media programs inwhich the user is interested, and to direct the client device (102) toobtain information about media programs, to play selected mediaprograms, to download or side-load media programs. In some embodiments,side-loading refers to a loading of a media program performed inparallel with a playing of the media program or another media program.

Available programming information may be obtained by the client device(106-1) from the streaming device (102) and/or the multimedia device(108-1). One or more tuners on multimedia devices (e.g., 108-1 through108-N) may be allocated to client devices (106-1 through 106-M) ondemand or after the discovery process successfully results in trustlevels satisfying the requirements for streaming media programs from themultimedia devices (108-1 through 108-N) to the client devices (106-1through 106-M).

The client device (106-1) may send a request to the streaming device toreceive available programming information (e.g., electronic programguides, stored program lists on various multimedia devices, etc.) thatdescribes what media programs may be available from broadcast sources,broadband sources, media data stores from remote and local multimediadevices, etc. Upon receiving the request, the streaming device (102) maybe configured to provide the available programming information to theclient device (106-1). The streaming device (102) may obtain at least apart of the available programming information on demand (e.g., inresponse to receiving the request from the client device (106-1) fromone or more of the multimedia devices (e.g., 108-1 through 108-N) thatare operatively linked to the streaming device (102). Alternatively, thestreaming device (102) may obtain at least a part of the availableprogramming information from one or more of the multimedia devices(e.g., 108-1 through 108-N) that are operatively linked to the streamingdevice (102) before receiving the request from the client device(106-1).

Available programming information may comprise or even be in the form ofaddresses (e.g., channels, Universal Resource Locators, file names,media data databases, media servers, media distribution systems, etc.)at which media programs may be obtained or streamed. Availableprogramming information as described herein may include but is notlimited to availability information of media programs that are stored atone of the multimedia devices (108-1 through 108-N), or media programsthat may not be stored at one of the multimedia devices (108-1 through108-N) and that may be received through one of the multimedia devices(108-1 through 108-N). For example, the client device (102-1) mayrequest a live broadcast or a movie on DVD that may not have been storedon one or more of the multimedia devices (108-1 through 108-N) butnevertheless may be received through a selected multimedia device (e.g.,108-1) among the multimedia devices (108-1 through 108-N). The selectedmultimedia device (108-1) may allocate one of one or more tuners toreceive the live broadcast and stream the content of the live broadcastthrough the streaming device (102) to the client device (106-1).Similarly, the selected multimedia device (108-1) may access a movie onDVD through one of its digital interfaces and stream the content of themovie through the streaming device (102) to the client device (106-1).In some embodiments, multiple streams of media programs generated basedon streams from multimedia devices to the streaming device may beconcurrently streamed by the streaming device (102) to a client device(102). One of the multiple streams of media programs may be played whileothers of the multiple streams of media programs may be side-loaded intothe client device (106-1).

A media program may be copyright free and thus content of the mediaprogram including any streamed content may be copied without legallimitation. Alternatively, a media program may be copyright protectedand thus the content of the media program including any streamed contentmay only be copied, recorded or distributed if digital rights to themedia program for performing these operations are secured and verified.In some embodiments, a multimedia device (e.g., 108-1) and/or thestreaming device (102) may be configured to verify whether a clientdevice (e.g., 106-1) or a user thereof possesses sufficient digitalrights to a media program. The streaming of the media program to theclient device (106-1) may be performed in compliance with the user'sverified digital rights to the media program. For example, media devices(e.g., multimedia devices, streaming devices, client devices, etc.) asdescribed herein may implement a security scheme that permits arecipient client device to play a media program with a stream of themedia program but does not permit the recipient client device to copy orrecord (e.g., save to persistent store for playback or for distribution)the media program with the stream.

In an example, the client device (106-1) may send a request to thestreaming device to select a media program for streaming. The requestmay represent a user command to play the media program or to side-loadthe media program in parallel with playing another media program. Uponreceiving the request from the client device (106-1), the streamingdevice (102) may be configured to interrogate the client deviceprogrammatically and/or manually for proof of the user's digital rightsto the media program. Additionally, optionally, or alternatively, uponreceiving the request from the client device (106-1), the streamingdevice (102) may be configured to determine the user's digital rights tothe media program based at least in part on the credentials previouslyreceived from the client device (106-1) or based at least in part ontrust levels previously established with the client device (106-1).

Digital rights as described herein include but are not limited to anyof: playing rights, copying rights, distribution rights, etc. Inresponse to a successful interrogation/validation of the user's digitalrights to the media program, the streaming device (102) may beconfigured to stream the media program from the multimedia device(108-1) to the client device (106-1) in compliance with the digitalrights that have been verified. Otherwise, the user's request to themedia program may be denied or limited in compliance with the user'sdigital rights to the media program.

Additionally, optionally, or alternatively, the streaming device (102)may be configured to determine whether the user only possesses a singlecopy right to the media program. If so, the devices involved instreaming the media program may implement a protocol to cause the mediaprogram to be removed, erased, expired, etc., from the multimedia device(108-1) once the media program has been successfully copied/recorded bythe client device (106-1). The streaming device may perform one or moreoperations (e.g., delivering a media program to one device, deleting themedia program from another device, maintaining the copies of the mediaprogram among multiple devices no more than a limit in accordance withthe verified digital rights (e.g., there is only one permissible copy ofthe media program on either the multimedia device (108-1) or the clientdevice (106-1)).

If the streaming device (102) determines that the client device, or theuser thereof, does not have the digital rights to the media program, thestreaming device (102) may take one or more of the following actions.The streaming device (102) may deny the request to streaming the mediaprogram to the client device (106-1). Additionally, optionally, oralternatively, the streaming device (102) may stream only a versionembedded with commercials, a trailer, a highlight, or an approvedabbreviated version of the media program to the client device (102).Additionally, optionally, or alternatively, the streaming device (102)may cause the client device (102) to acquire the digital rights to themedia program either through the streaming device (102), one of themultimedia devices (108-1 through 108-N), or directly over a networkconnection (e.g., internet based) from an authorized right holder to themedia program.

If the streaming device (102) determines that the client device (106-1),or the user thereof, has the digital rights to the media program, thestreaming device (102), or a stream controller (e.g., 116 of FIG. 1)therein, may send one or more streaming requests to the multimediadevice (108-1) to stream the media program from the multimedia device(108-1) to the streaming device (102). The streaming device (102) may beconfigured to communicate streaming requests and responses with themultimedia devices (108-1) based on the same protocol (e.g., amulti-room streaming protocol) used to stream media programs amongst themultimedia devices (108-1 through 108-N). In some embodiments, astreaming request as described herein at least identifies a portion of amedia program to be streamed. In response to receiving the streamingrequests from the streaming device (102), the multimedia device (108-1)performs one or more operations that stream the requested portions ofthe media program to the streaming device (102).

The streaming device (102), or a source stream module (e.g., 110 ofFIG. 1) therein, may be configured to receive first content (e.g., therequested portions) of a media program (e.g., the media programrequested by the client device 106-1) in a first stream (e.g., 300-1 ofFIG. 3) from a multimedia device (e.g., 108-1 of FIG. 1). After thefirst content of the media program is received by the streaming device(102), the streaming device (102), or a streaming adaptation module(114) therein, may be configured to perform one or more operations totransform or adapt the first content streamed from the multimedia device(108-1) into second content in a second stream (e.g., 300-2 of FIG. 3)from the streaming device (102) to the client device (106-1).Subsequently, the streaming device (102), or a client stream module (112of FIG. 1) therein, may be configured to deliver the second content tothe client device (106-1) in the second stream (300-2).

In some embodiments, one or more tags may be embedded in streams from astreaming device (e.g., 102) to a client device (e.g., 106-1).Techniques related to tags are described in U.S. Pat. No. 7,889,964, theentire content of which are incorporated by reference herein. A deviceas described herein may be configured with a mechanism for insertingtags into a media stream such as an audio stream, a video stream, atelevision broadcast stream, etc. Tags may be inserted into a mediastream prior to or at the time of transmission. The tags contain commandand control information that a recipient device translates and actsupon. During the tag processing stage, the recipient device may beconfigured to perform operations as described herein in response to thetags. Tags can be used to indicate the start and end points of a programsegment, a subset of media data units, etc. Tags can be used to indicatea presence of a media feature, an absence of a media feature, etc. Therecipient device may be configured to fast forward, slow forward, skipsover a program segment during playback in response to the tags or userinput related to the tags.

Menus, icons, and Web pages may be displayed to the user based oninformation included in a tag. The user may interact with the menu,icon, or Web page through an input device. The recipient device performsthe actions associated with the menu, icon, or Web page and the user'sinput. Tags may be used to create indexes in media data, media streams,media files, etc. This allows the user to jump to particular indexes inthe media data, media streams, media files, etc.

A tag in a stream (e.g., the second stream 300-2 in the previousexample) to the client device (106-1) may cause the client device(106-1) to display an interactive icon to a user so that the user mayselect. Selecting the interactive icon by the user may lead toperforming one or more actions related to the tag. An information tag ina stream (e.g., the second stream 300-2 in the previous example) to theclient device (106-1) may inform the client device (106-1) a specificpiece of information. For example, a time duration (e.g., 10 minute fastforward playing of a media program) in a trick play mode on the clientdevice (106-1) may correspond to a time duration (e.g., 20 minuteunskipped and unrepeated normal playing of the media program) in anormal playing mode. An information tag may be used to tell the clientdevice (106-1) how much the corresponding time duration in the normalplaying mode is for the time duration in the trick play mode. A tag maybe embedded in a stream (e.g., the first stream 300-1 in the previousexample) from a multimedia device (e.g., 108-1) as received by thestreaming device (102). Additionally, optionally, or alternatively, atag may be inserted into a stream (e.g., the second stream 300-2) to theclient device (106-1) by the streaming device (102).

Content delivered through a stream may comprise premium content and/ornon-premium content. For example, a pay-per-view media program may bedelivered in a stream as described herein. Resources on a multimediadevice (e.g., 108-1) such as tuners may be made available to acquiremultimedia content to be streamed from the multimedia device (108-1) toa client device (e.g., 106-1). A streaming device (e.g., 102) may beconfigured to support viewing TV channels acquired by tuners controlledby or located in multimedia devices (e.g., 108-1 through 108-N). A usermay change channels and watch live TVs streamed by the multimediadevices (108-1 through 108-N). For example, while streaming a mediaprogram (which may be a live TV channel, a stored media program, a mediaprogram through a digital video interface, etc.) from a multimediadevice (108-1) to a client device (106-1), the streaming device (102)may receive a streaming request from the client device (106-1) to switchor to play simultaneously another media program. The other media programmay, but is not limited to, be received from a tuner of the multimediadevice (108-1), a tuner of another multimedia device (e.g., 108-2), astored program on one of the multimedia devices, a broadband accessibleprogram through one of the multimedia devices, etc. In response, thestreaming device (102) may switch to, or add, a new stream for the othermedia program.

In some embodiments, a multimedia device (e.g., 108-2) may become aclient device for streaming services provided by a streaming device(e.g., 102) as described herein. The streaming device may be configuredto receive a stream of a media program from a source multimedia device(e.g., 108-1), and generate two or more streams of the media programbased on the stream of the media program to client devices. One of thetwo or more streams of the media program may be for recording at adestination multimedia device (e.g., 108-2), which becomes a clientdevice for the purpose of streaming the media program. Another of thetwo or more streams of the media program may be for recording or playingat a mobile device, which may be a client device (e.g., 106-2). Thestreaming device (102) may be configured to determine that streaming amedia program into multiple devices for the intended playing orrecording operations complies with digital rights of one or more usersor client devices that make the streaming requests for the mediaprogram.

In some embodiments, the streaming device (e.g., 102) may be configuredto receive one or more streaming requests related to a media programfrom a first device (which may be a local device, a remote deviceconnected over the internet, etc.), and generate one or more streams ofthe media program to at least a second device that is different from thefirst device. Thus, a user may travel around the world and still be ableto interact with a streaming device (e.g., 102) to stream favorablemedia programs to a remote device (e.g., 106-1) with which the usercarries around or to a different client device (e.g., 106-2) that islocated elsewhere.

A streaming device (e.g., 102) as described herein may be configured toset up communication channels with multimedia devices (e.g., 108-1through 108-N) and client devices (e.g., 106-1 through 106-M). Thesetting up of the communication channels may be performed as a part of aservice and device discovery process among these media devices, or asseparate operations performed after the discovery process. Acommunication channel may be used as one or more data paths and/or oneor more control paths between two or more of the multimedia devices(108-1 through 108-N), the streaming device (102), the client device(106-1 through 106-M), other devices/servers (e.g., a content serverconnected to one or more of the multimedia devices 108-1 through 108-Nover the internet or a dedicated wide area network connection), etc. Acommunication channel as described herein may carry streams of mediaprograms, in-band control and data information (e.g., along with astream of a media program), out-of-band control and data information(e.g., separate from any stream of media program), etc.

In some embodiments, a client device (e.g., 106-1) and a multimediadevice (e.g., 108-1), from which media programs may be streamed by astreaming device (e.g., 102) to the client device, may implement aplurality of common (or standard) menu screens. Through one or morecommunication channels, available programming information and othermetadata, which may be used to drive the common menu screens (e.g.,implemented in a data-driven model) on a client device as describedherein, may be provided or forwarded from any of one or more multimediadevices (e.g., 108-1 through 108-N) to any of one or more client devices(106-1 through 106-N) by the streaming device (102). Under techniques asdescribed herein, a use may be enabled to use a client device to accessthe same media programs (e.g., shows, channels, live broadcasts,podcasts, etc.) as those accessible through a multimedia device. In someembodiments, software and/or hardware based security features thatprevent hacking or stealing protected media content (e.g., a premiummedia program) may be implemented by one or more of a multimedia device(e.g., 108-1), a streaming device (e.g., 102), and a client device(e.g., 106-1) that are involved in streaming the protected mediacontent.

In some embodiments, a streaming device (e.g., 102) is configuredto—automatically, with a user command, etc.—switch an ongoing stream ofa media program from a first multimedia device (e.g., 108-1) to a seconddifferent multimedia device (e.g., 108-2). The streaming device (102)may be configured to determine whether to switch an ongoing stream basedon one or more factors. These factors include but are not limited to:network load conditions, multimedia device load conditions, multimediadevice capabilities, device compatibilities, etc. In an example, thestreaming device (102) may determine that the second differentmultimedia device (108-2) is the least busy multimedia device among aplurality multimedia devices (e.g., 108-1 through 108-N), and henceswitch the stream from the first multimedia device (108-1). In someembodiments, a streaming device (e.g., 102) is configured to switch anongoing stream of a media program from a first multimedia device (e.g.,108-1) to a second different multimedia device (e.g., 108-2). Thestreaming device (102) may be configured to determine whether to switchan ongoing stream based on one or more factors. These factors includebut are not limited to: user commands, network load conditions,multimedia device load conditions, etc. In an example, the streamingdevice (102) may receive a user command (e.g., as provided by a clientdevice such as 106-1) that the second different multimedia device(108-2) should be used in place of the first multimedia device (108-1).In response, the streaming device (102) may switch the stream from thefirst multimedia device (108-1) to the second multimedia device (108-2).In another example, the streaming device (102) may determine that thesecond different multimedia device (108-2) is the least busy multimediadevice among a plurality multimedia devices (e.g., 108-1 through 108-N),and hence switch the stream from the first multimedia device (108-1) tothe second multimedia device (108-2). In a further example, thestreaming device (102) may determine that the first multimedia device(108-1) is busier and/or consumes more resources and/or performs worsethan the second different multimedia device (108-2), and hence switchthe stream from the first multimedia device (108-1) to the secondmultimedia device (108-2).

In some embodiments, a streaming device (e.g., 102) may be configuredto—automatically, with a user command, etc.—switch an ongoing stream ofa media program from a first client device (e.g., 106-1) to a seconddifferent client device (e.g., 106-2) or another media device. Thestreaming device (102) may be configured to determine whether to switchan ongoing stream based on one or more factors. These factors includebut are not limited to: network load conditions, client device loadconditions, device capabilities and compatibilities, etc. In an example,the streaming device (102) may determine that the second differentclient device (106-2) or the other media device is the best media device(e.g., a high resolution TV in a room in which the user's presence isdetected or sensed) for rendering the media program among a pluralitymedia devices (e.g., client devices 106-1 through 106-N, other mediadevices, etc.), and hence switch the stream from the first client device(106-1) to the second multimedia device (106-2) or the other mediadevice.

A streaming device (e.g., 102) may be configured to support a variety oftrick play modes for a media program that is being streamed from amultimedia device (108-1) to a client device (e.g., 106-1). The clientdevice (102) may send a user command in the form of a trick modestreaming request to the streaming device (102) to commence a trick playmode while the media program is being streamed for a normal playing modein a full stream path (e.g., 300 of FIG. 3) comprising a first stream(e.g., 300-1) of the media program between the multimedia device (108-1)and the streaming device (102) and a second stream (e.g., 300-2) of themedia program between the streaming device (102) and the client device(106-1). In the normal playing mode, the streaming device (102) may senda first portion of the media program in the second stream (300-2), wherethe first portion is adapted for the normal playing mode. For example,the first portion may comprise non-skipping and non-repeating imageframes originally included in the media program (e.g., as received froma content server, a content distributor, a storage medium, a broadbanddownload, a broadcast signal, etc.). In the trick play mode, thestreaming device (102) may send a second portion of the media program inthe second stream (300-2), where the second portion is adapted for thetrick play mode. The second portion may comprise skipping and/orrepeating image frames originally included in the media programdepending on the trick play mode. In some embodiments, the multimediadevice (108-1) still sends image data (e.g., all image frames)originally included in the media program as appropriate for the normalplaying mode in the first stream (300-1), while the second stream(300-2) is being used to send image frames adapted for a current playmode to the client device (106-1). In some embodiments, the multimediadevice (108-1) sends image data adapted for a current mode in the firststream (300-1), while the second stream (300-2) is being used to sendimage frames adapted for the current play mode to the client device(106-1). Thus, in various embodiments, support for trick play modes at aclient device (e.g., 106-1) may be provided by the client device(106-1), a streaming device (e.g., 102), a multimedia device (e.g.,108-1), two or more of the foregoing media devices, etc.

A streaming device (e.g., 102) may be configured to allow a multimediadevice (e.g., 108-1) to concurrently support a first user for performingmedia processing/rendering operations directly with the multimediadevice (108-1) and image rendering device operatively linked with themultimedia device (108-1), while supporting a second user for performingindependent media processing/rendering operations with a client device(e.g., 106-1). In some embodiments, the multimedia device may beconfigured with one, two or more tuners. In the case of two or moretuners, in some embodiments, each of the first user and the second useris allocated with a separate tuner, allowing each of the users to watchseparate channels and live broadcasts, etc. In some embodiments, menuscreen presentations and interactions may be centrally (e.g., directly)served by the multimedia device (108-1), for example, using athin-client approach. In some embodiments, the multimedia device (108-1)provides underlying data (program metadata, EPG data, media storageinformation, broadband access resource locators, broadcast channels,etc.) for the client device (106-1) to present menu screen presentationsand interact with the user locally with the user using a thick-clientapproach. For example, the multimedia device (108-1) can display anelectronic program guide (EPG) to a user of the multimedia device(108-1). Subsequently, the user can provide user input to the multimediadevice (108-1). Examples of the user input include but are not limitedto only a selection of a program from the displayed EPG. In response toreceiving the user input, the multimedia device (108-1) can beconfigured to display a program description of the program. The user canuse a gesture such as a flick motion, etc., to trigger playing theprogram on a second multimedia device (e.g., 108-2, etc.).

A streaming device (e.g., 102) may be configured to detect/determinespecific types of multimedia devices (108-1 through 108-N) and clientdevices (106-1 through 106-M), and customize one or morecharacteristics, operational parameters, bitrates, dynamic ranges, colorgamut support, resolutions, etc., according to the detected devicetypes. In an example, the streaming device (102) may set a 2 Mbit/secbitrate for a client device such as a tablet computer, and may set a 10Mbit/sec bitrate for a 50 inch high-end TV. The streaming device (102)may be configured to monitor bandwidth usages of one or more streams anddynamically alter bandwidth allocations to the one or more streams basedon the bandwidth usages.

A streaming device (e.g., 102) may be configured to stream media contentfrom a client device (106-1) to a multimedia device (e.g., 108-1). Forexample, personal videos shot by a tablet computer or a handheld devicemay be streamed by the streaming device (102) from the handheld deviceto another media device in a manner similar to how media content may bestreamed in a reverse direction.

A streaming device (e.g., 102) may be configured to interoperate withmedia devices of a variety of capabilities and features and to takeadvantage of the capabilities and features of the media devices asappropriate. For example, for less capable multimedia devices, thestreaming device (102) may perform streaming, transcoding (e.g.,personal media content, home video, etc., from a client device), and/ormore operations for the less capable multimedia devices, whereas formore capable multimedia devices, the streaming device (102) may performstreaming and/or fewer operations for the more capable multimediadevices. Additionally, optionally, or alternatively, the streamingdevice (102) may perform different operations for client devices ofdifferent capabilities and features.

4.0 Gesture-Based Streaming

In an embodiment, the one or more features or functionalities asdescribed herein may be implemented by one or more software modules,hardware modules, combinations of software and hardware modules, etc.The modules may be preconfigured, preloaded, downloaded, installed,etc., on a device. The modules may execute concurrently with othermodules, and may be configured to detect gestures made by a user of amedia device (e.g., a multimedia device, a client device, etc.).

FIG. 4B illustrates an example client device (106) comprising aclient-side streaming module (420) and a gesture input interface (422)in accordance with an embodiment of the invention. Client device 106(which for example may be 106-1) may comprise modules (e.g., gestureinput interface 422) configured for detecting a gesture as user input. Auser (e.g., an operator of client device 106-1) may perform a gesturewhich gesture input interface 422 on client device 106-1 is configuredto detect.

An example of gesture as described herein may be a flick made by a usertouching a particular spot on a touch screen interface (e.g., as a partof gesture input interface 422, etc.) of a device with a finger, andsliding the finger away from the particular spot while maintainingcontact with the touch screen interface, as described in the U.S. patentapplication Ser. No. 12/950,857, which is incorporated by reference asthough originally disclosed herein. It should be noted that for thepurpose of illustration only, finger-based gestures are described;however, other gestures and/or other biological or non-biological inputmeans, pens, stylus, gloves, etc., may be used in various embodiments ofthe invention. In some embodiments, maintaining contact with a touchscreen interface may include maintaining a (e.g., close) hoveringmotion—for example, by hand—over the touch screen interface, wherein thehovering motion is detectable by the touch screen interface. Examples oftouch screen interfaces include but are not limited to any of: resistivetouch screen interfaces, capacitive touch screen interfaces,pressure-based touch screen interfaces, heat-based touch screeninterface, optics-based touch screen interface, etc.

Examples of gestures as described herein include but are not limited tomotions of devices as detected by motion tracking modules, one or moreof which may be a part of gesture input interface 422, etc. Examples ofmotion tracking modules include but are not limited to any of:displacement tracking modules, velocity tracking modules, accelerationtracking modules, etc.

In an embodiment, any other device used concurrently with a deviceconfigured to detect one or more types of gestures may or may not beconfigured to detect the same types of gestures. In an example, aconcurrently used device (e.g., client device 106-2) may not evensupport any type of gesture detection. In another example, a clientdevice such as 106-1 may be configured to detect both flick motions witha touch screen interface and device motions with motion trackingmodules. In a further example, a client device (e.g., 106-3) or amultimedia device (108-1) may be configured to detect only flick motionson a touch screen interface.

In an embodiment, while a client device (e.g., 106-1) is playing a mediaprogram on a first display integrated or attached with the client device(106-1), a user of the client device (106-1) may request switching theplaying of the media program to a second display that is not integratedor attached with client device 106-1. In an example, the second displaymay be integrated or attached with a multimedia device (e.g., 108-1),another client device (e.g., 106-2), etc. In another example, the seconddisplay may be a shared display by one or more of client devices andmultimedia devices.

For illustration purposes, client device 106-1 comprises a gesture inputinterface (e.g., 422 of FIG. 4B). While watching a media program on afirst display of client device 106-1, user can make a gesture (e.g., aflick motion) which gesture input interface 422 (e.g., a touch screeninterface, etc.) is configured to detect. In response to detecting thegesture by gesture input interface 422 of client device 106-1, clientdevice 106-1 can identify/determine a time point at which client device106-1 is to stop playing the media program on the first display. Clientdevice 106-1 may be configured to send a streaming request to a mediastreaming device (e.g., 102 of FIG. 3) to stream the media program to atarget device (e.g., client device 106-2, multimedia device 108-1, etc.)other than client device 106-1 for the purpose of rendering theremaining media program on a second different display. The seconddisplay may be integrated or attached with—shared by a group of mediadevices including—the target device.

Streaming of the media program to the target device for switchingplaying of the media program from the first display to the seconddisplay may, but is not required to, start at the identified time pointof the media program if some portions of the media program has beenplayed before switching rendering the media program from the firstdisplay to the second display. For example, the time point identifiedfor client device 106-1 to stop playing on the first display may bespecified in the streaming request to the media streaming device 102.Streaming the media program to the target device may start from the timepoint at which client device 106-1 stops playing the media program.

In some embodiments, the streaming request contains informationspecifying a target device (e.g., 106-2, 108-1, etc.). In some otherembodiments, the streaming request does not contain informationspecifying a target device (e.g., 106-2, 108-1, etc.), or containinformation merely suggesting a target device (e.g., 106-2, 108-1, etc.)as a default choice. In some embodiments, media streaming device 102 isconfigured to autonomously determine a suitable device as the targetdevice (e.g., 108-1). For example, the user may be initially watchingthe media program (e.g., a movie) on the first display of client device106-1 (e.g., a tablet computer, etc.). When the user makes a gesture tocause sending the streaming request to media streaming device 102 tostream the media program to a target device from that time point on,media streaming device 102 may be configured to identify one or moreavailable devices (e.g., 106-2, . . . , 106-M, 108-1, . . . , 108-N,etc.). Media streaming device 102 may be configured to default to anavailable device if the available device is the only one detected.Otherwise, if more than one available device is sensed by mediastreaming device 102, media streaming device 102 may be configured toselect one of the one or more available devices as the target device(e.g., 106-2, 108-1, etc.) based on one or more selection criteria(e.g., equally or non-equally weighted, etc.), which may include but arenot limited to one or more of: locations and/or motions of one or moreusers, characteristics of available displays, characteristics ofavailable sound systems, sizes of displays, resolutions of displays,proximities to client device 106-1, dynamic ranges, color gamuts, soundsystems, energy uses, availability of resources and capabilitiesrelating to tuners, processors, memory spaces, etc. For example,multimedia device 108-1 which may be integrated or attached with a highresolution high dynamic range display near client device 106-1 can beselected as the target device based on the selection criteria.

In embodiments in which a streaming request may contain informationspecifying a target device (e.g., 106-2, 108-1, etc.), a media streamingdevice (e.g., 102) may be configured to determine the target device(e.g., 108-1) based on the information in the streaming request. As inthe previous example, the user may be initially watching the mediaprogram (e.g., a movie) on the first display of client device 106-1(e.g., a tablet computer, etc.). When the user makes a gesture to causesending the streaming request to media streaming device 102 to streamthe media program to a target device from that time point on, clientdevice 106-1 may be configured to determine the target device based onthe gesture and specify the target device in the streaming request tomedia streaming device 102. In an example, client device 106-1 may beconfigured to determine a spatial direction from the gesture andcorrelated the spatial direction with a specific device if more than oneavailable device exists. In another example, at the start of the usermaking the gesture, client device 106-1 may be configured to overlay oneor more icons for one or more available devices with the images from themedia program and to select a specific device among the one or moreavailable devices, as indicated by a spatial direction of a flickmotion. The icons for the available devices may be preconfigured ordynamically created by client device 102 on a display (e.g., the firstdisplay, etc.).

In some embodiments, the user makes the gesture while the media programis being streamed from media streaming device 102 to client device106-1. In some embodiments, the media program is not being streamed toclient device 106-1 by media streaming device 102 when the gesture isdetected by client device 106-1. For example, the media program beingplayed on client device 106-1 may be from a local media data store on,or accessible to, client device 106-1. Media streaming device 102 maystream the media program to the target device from the media data withclient device 106-1 or alternatively from a different device other thanthe target device and client device 106-1. In some embodiments, themedia program may already be available to the target device; in such ascenario, media streaming device 102 may be configured to send aplayback request with the time point contemporaneous or substantiallycontemporaneous with the gesture, as determined by client device 106-1,to the target device to start playing the media program from that timepoint.

In some embodiments, the streaming request may be used to also requestmedia streaming device 102 to stream the media program to more than onetarget devices and/or target displays. For example, the streamingrequest may cause two or more of display systems, handheld devices(e.g., intelligent phones, tablet computers, etc.), media devices, etc.,to concurrently playing the media program from the time point to theuser and/or multiple users.

Client device 106-1 may be playing the media program in a specificplaying mode, when the user makes the gesture that triggers sending thestreaming request to media streaming device 102. The streaming requestsent by client device 106-1 to media streaming device 102 may beconfigured to include information that indicates the specific playingmode. Media streaming device 102 may be configured to inform the targetdevice of the specific playing mode. In some embodiments, the targetdevice is configured to accept and support the specific playing mode asspecified in the streaming request. Examples of playing modes asdescribed herein may include but are not limited to any of: one or morenormal playing modes, one or more fast forward playing modes, one ormore rewind playing modes, etc.

In some embodiments, one or more media devices (e.g., client device,media streaming device, multimedia device, target devices, etc.) may beconfigured to cooperatively support a user to control playing of a mediaprogram on target devices from a media device such as client device106-1. Client device 106-1 from which the user controls the playing ofthe media program may or may not be one of the target devices which isrendering the media program presently. Client device 106-1 may beconfigured to detect gestures. The target devices, streaming devices,etc., may be configured to operate with user commands generated based onthe gestures detected by client device 106-1. These user commandsinclude but are not limited to streaming requests that switch theplaying of the media program among the target devices, user commandsthat control how a media program should be played on a target device,etc. Thus, in some embodiments, a user may continue controlling theplaying of a media program from a single device—even after the playingof the media program has been successfully handed off to another targetdevice. The user may use one or more input methods relating to gestureinput interfaces, graphic interfaces, menus, keypads, voice input,buttons, wheels, etc., to issue one or more user commands to a targetdevice on which the media program is being played. For example, a usercommand may be sent to the target device to a media streaming device(e.g., 102), which in turn notifies the target device (e.g., 108-1) ofthe user command. As a result, the target device may change the playingof the media program from a current playing mode to a specific playingmode as requested by the user command. The user command may representone of one or more user commands for changing playing modes as inputtedby the user of client device 106-1 while the media program is beingstreamed to the target device by media streaming device 102.

The media program rendered by client device 106-1 may be encoded in afirst format client device 106-1 is configured to decode before theplaying of the media program is switched from client device 106-1 to thetarget device. The media program as received by the target device forrendering may be encoded in a second different format the second clientdevice is configured to decode. The transcoding of media data of a mediaprogram from one or more first formats to one or more second formats maybe performed by media streaming device 102 as a part of streaming themedia program from one media device to another media device, ascontrolled by the user.

In some embodiments, after the playing of the media program is switchedfrom client device 106-1 to a target device, client device 106-1continues playing the media program at the client device (or a displayattached therewith) while the media program is being streamed to thetarget device for playing at the target device. Additionally,optionally, or alternatively, client device 106-1 may play a differentmedia program while the media program is being streamed to the targetdevice for playing at the target device, side-loading at the targetdevice, etc. Client device 106-1 may be configured to receive adifferent media program streamed from media streaming device 102 whilethe media program is being streamed by media streaming device 102 to thetarget device. Additionally, optionally, or alternatively, mediastreaming device 102 may be configured to stream one or more additionalmedia programs concurrently to one or more devices (e.g., 106-1, . . . ,106-M, 108-1, . . . , 108-N, etc.) while the media program is beingstreamed by media streaming device 102 to the target device.

Although a specific system or system configuration is described, otherembodiments are applicable to any system or system configuration thatcan be used to perform the functionality described herein. Components ofthe system or system configuration may be connected by, for example, adata bus, a data link, a Local Area Network (LAN), Wide Area Network(WAN), the Internet, Intranet, Extranet, etc. Alternatively oradditionally, any number of devices within the system or systemconfiguration may be directly connected to each other through wired orwireless communication segments.

One or more components described within system or system configurationmay be combined together in a single device or divided among severaloperatively linked discrete devices. Each of these components ispresented to clarify the functionalities described herein and may not benecessary to implement the invention. Furthermore, components not shown(in figures as described herein) may also be used to perform thefunctionalities described herein. Functionalities described as performedby one component may instead be performed by another component.

As used herein, media program may refer to media data containing audiocontent including but not limited to any of: audio data, audiotranscription data, audiovisual data, multimedia data, internetdownloaded content data, multimedia data with markup language pages,videos, movies, multimedia presentations, audio books, electronic books,podcasts, etc. A media data unit may refer to a data unit containingaudio data including but not limited to any of: audio samples, audiotranscription data that may be used for voice synthesis, audio dataunits, audiovisual data units, media data segments, image frames, etc.Media data may be received by a system as described herein using one ormore of wire-based links or wireless links. Media data may be receivedin the form of a media file, a media data stream, etc. Media data may bereceived with any of a wide variety of formats defined by standard orproprietary specifications including but not limited to any related toCD, MPEG-1, MPEG-2, and MPEG-2.5 Audio Layer III (MP3), Advanced AudioCoding (AAC), DVD, HD DVD, Blu-ray Disc, H.261, H.263, H.264/MPEG-4,etc.

5.0 Example Multimedia Device

FIG. 4A is a block diagram that shows an example of the internalstructure and operation of a multimedia device, according to anembodiment of the invention. An example of the internal structure andoperation of a media device such as a digital video recorder (DVR) isfurther described in U.S. Pat. No. 6,233,389, which is incorporated byreference as though originally disclosed herein. In some embodiments,the multimedia device may further comprise some or all of the softwareand/or components as illustrated in FIG. 1 or FIG. 2.

The multimedia device shown in FIG. 4A comprises an input module 401, amedia switch 402, and an output module 403. Input module 401 receivestelevision (TV) input streams in any of a variety of forms. For example,a TV input stream received by input module 401 may take the form of aNational Television Standards Committee (NTSC) compliant signal or a PALcompliant broadcast signal. For another example, a TV input streamreceived by input module 401 may take a digital form such as a DigitalSatellite System (DSS) compliant signal, a Digital Broadcast Services(DBS) compliant signal, or an Advanced Television Standards Committee(ATSC) compliant signal. DBS, DSS, and ATSC are based on standardscalled Moving Pictures Experts Group 2 (MPEG-2) and MPEG-2 Transport.MPEG-2 Transport is a standard for formatting the digital data streamfrom the TV source transmitter so that a TV receiver can disassemble theinput stream to find programs in the multiplexed signal. According toone embodiment, input module 401 produces MPEG streams. In anotherembodiment, input module 401 produces streams that are encoded using adifferent codec.

An MPEG-2 transport multiplex supports multiple programs in the samebroadcast channel, which multiple video and audio feeds and privatedata. Input module 401 tunes the channel to a particular program,extracts a specified MPEG stream from the channel, and feeds the MPEGstream to the rest of the system. Analog TV signals are encoded into asimilar MPEG format using separate video and audio encoders, such thatthe remainder of the system is unaware of how the signal was obtained.Information may be modulated into the vertical blanking interval (VBI)of the analog TV signal in a number of standard ways; for example, theNorth American Broadcast Teletext Standard (NABTS) may be used tomodulate information onto certain lines of an NTSC signal, which the FCCmandates the use of a certain other line for closed caption (CC) andextended data services (EDS). Such signals are decoded by input module401 and passed to the other modules as if the signals had been deliveredvia an MPEG-2 private data channel.

Media switch 402 mediates between a microprocessor CPU 406, a hard diskor storage device 405, and memory 404. Input streams are converted to anMPEG stream and sent to media switch 402. Media switch 402 buffers theMPEG stream into memory 404. Media switch 402 then performs twooperations if a user of the multimedia device is watching real-time TV:media switch 402 sends the MPEG stream to output module 403 andsimultaneously writes the MPEG stream to hard disk or storage device405.

Output module 403 receives MPEG streams as input and produces an analogTV signal according to NTSC, PAL, or other TV standards. Output module403 comprises an MPEG decoder, an on-screen display (OSD) generator, ananalog TV encoder, and audio logic. The OSD generator allows the programlogic to supply images which may be overlaid on top of the resulting TVanalog signal. Additionally, output module 403 can modulate informationsupplied by the program logic onto the VBI of the output signal in anumber of standard formats, including NABTS, CC, and EDS.

Example Process Flow

In various embodiments, one, two or more devices such as one or more ofthose illustrated may be singly or jointly implement at least some ofthe techniques as described herein. FIG. 5 illustrates an exampleprocess flow for streaming media programs between multimedia devices andclient devices, according to an example embodiment. In some embodiments,a streaming device (e.g., 102 of FIG. 1 and FIG. 2, DVR of FIG. 4A,client device of FIG. 4B, etc.) comprising one or more computing devices(e.g., 600 of FIG. 6) may perform this process flow.

In block 502, while a client device (e.g., 106-1) is playing a mediaprogram, the client device detects a gesture with a gesture inputinterface of the client device. In some embodiments, at least theportion of the media program comprises one or more tags. The gesture maycomprise one or more of flick motions, hovering motions, or devicemotions.

In block 504, in response to detecting the gesture, the client deviceidentifies, on the client device, a time point at which the clientdevice stops playing the media program.

In block 506, the client device sends a streaming request to a mediastreaming device (e.g., 102) to stream at least a portion of the mediaprogram to a second client device (e.g., 106-2). The portion of themedia program includes media content starting from the time point atwhich the client device stops playing the media program.

In some embodiments, the second client device may be identified amongone or more client devices other than the client device by the clientdevice, based on a direction of the gesture. The streaming request sentby the client device to the media streaming device may indicate thesecond client device to the streaming device.

In some embodiments, the second client device may be identified amongone or more client devices other than the client device by the mediastreaming device. The streaming request sent by the client device to themedia streaming device may not indicate the second client device to thestreaming device.

In some embodiments, the media program is being streamed to the clientdevice by the media streaming device when the gesture is detected by theclient device. In some embodiments, however, the media program is notbeing streamed to the client device by the media streaming device whenthe gesture is detected by the client device.

In some embodiments, the streaming request sent by the client device tothe media streaming device also requests the media streaming device tostream—concurrently or non-concurrently with streaming at least theportion of the media program to the second client device—at least theportion of the media program to a third client device other than theclient device and the second client device.

In some embodiments, at the time detecting the gesture, the clientdevice is playing the media program in a specific playing mode. Thestreaming request sent by the client device to the media streamingdevice indicates the specific playing mode, which represents one of oneor more normal playing modes, one or more fast forward playing modes,one or more rewind playing modes, etc. The client device may continue toaccept user commands, which may or may not be gesture-based, to controlthe streaming of the media program to the second client device and/orsubsequent devices to which the media program is being or is to bestreamed subsequent to and in connection with the streaming request. Theclient device can cause a user command to be sent to the second clientdevice by way of the media streaming device. The user command can causethe second client device to operate in a second playing mode other thanthe specific playing mode. Here, the user command may represent one of aplurality of user commands for changing playing modes as inputted by auser of the client device while the media program is being streamed tothe second client device.

In some embodiments, the media program rendered by the client device isencoded in a first format the client device is configured to decode. Atleast the portion of the media program as received by the second clientdevice for rendering may be transcoded by the client device or the mediastreaming device into a second different format the second client deviceis configured to decode.

In some embodiments, the client device is one of tablet computers,handheld devices, laptops, e-readers, personal computing devices, gamedevices, or display systems, whereas the second device is a differentone of tablet computers, handheld devices, laptops, e-readers, personalcomputing devices, game devices, or display systems.

In some embodiments, a network connection among, the client device, thestreaming device and the second client device comprises at least onewireless network link.

In some embodiments, the client device continues playing the mediaprogram while the media program is being streamed from the multimediadevice to the second client device. In some embodiments, the clientdevice plays a different media program while the media program is beingstreamed from the multimedia device to the second client device. Theclient device may receive a different media program streamed from themedia streaming device while the media program is being streamed fromthe multimedia device to the second client device.

In some embodiments, the media streaming device streams one or moreadditional media programs concurrently to one or more client deviceswhile the media program is being streamed from the multimedia device tothe second client device.

Embodiments include an apparatus comprising a processor and configuredto perform any one of the foregoing methods. Embodiments include acomputer readable storage medium, storing software instructions, whichwhen executed by one or more processors cause performance of any one ofthe foregoing methods.

Note that, although separate embodiments are discussed herein, anycombination of embodiments and/or partial embodiments discussed hereinmay be combined to form further embodiments.

Hardware Overview

FIG. 6 is a block diagram that illustrates a computer system 600 uponwhich an embodiment of the invention may be implemented. Computer system600 includes a bus 602 or other communication mechanism forcommunicating information, and a processor 604 coupled with bus 602 forprocessing information. Computer system 600 also includes a main memory606, such as a random access memory (RAM) or other dynamic storagedevice, coupled to bus 602 for storing information and instructions tobe executed by processor 604. Main memory 606 also may be used forstoring temporary variables or other intermediate information duringexecution of instructions to be executed by processor 604. Computersystem 600 further includes a read only memory (ROM) 608 or other staticstorage device coupled to bus 602 for storing static information andinstructions for processor 604. A storage device 610, such as a magneticdisk or optical disk, is provided and coupled to bus 602 for storinginformation and instructions.

Computer system 600 may be coupled via bus 602 to a display 612, such asa cathode ray tube (CRT) or a liquid crystal display (LCD), fordisplaying information to a computer user. An input device 614,including alphanumeric and other keys, is coupled to bus 602 forcommunicating information and command selections to processor 604.Another type of user input device is cursor control 616, such as amouse, a trackball, or cursor direction keys for communicating directioninformation and command selections to processor 604 and for controllingcursor movement on display 612. This input device typically has twodegrees of freedom in two axes, a first axis (e.g., x) and a second axis(e.g., y), that allows the device to specify positions in a plane.

The invention is related to the use of computer system 600 for a windowconfiguration unit. According to one embodiment of the invention, thewindow configuration unit is provided by computer system 600 in responseto processor 604 executing one or more sequences of one or moreinstructions contained in main memory 606. Such instructions may be readinto main memory 606 from another computer-readable medium, such asstorage device 610. Execution of the sequences of instructions containedin main memory 606 causes processor 604 to perform the process stepsdescribed herein. One or more processors in a multi-processingarrangement may also be employed to execute the sequences ofinstructions contained in main memory 606. In alternative embodiments,hard-wired circuitry may be used in place of or in combination withsoftware instructions to implement the invention. Thus, embodiments ofthe invention are not limited to any specific combination of hardwarecircuitry and software.

The term “computer-readable medium” as used herein refers to any mediumthat participates in providing instructions to processor 604 forexecution. Such a medium may take many forms, including but not limitedto, non-volatile media, volatile media, and transmission media.Non-volatile media includes, for example, optical or magnetic disks,such as storage device 610. Volatile media includes dynamic memory, suchas main memory 606. Transmission media includes coaxial cables, copperwire and fiber optics, including the wires that comprise bus 602.Transmission media can also take the form of acoustic or light waves,such as those generated during radio wave and infrared datacommunications.

Common forms of computer-readable media include, for example, a floppydisk, a flexible disk, hard disk, magnetic tape, or any other magneticmedium, a CD-ROM, any other optical medium, punch cards, paper tape, anyother physical medium with patterns of holes, a RAM, a PROM, and EPROM,a FLASH-EPROM, any other memory chip or cartridge, a carrier wave asdescribed hereinafter, or any other medium from which a computer canread.

Various forms of computer readable media may be involved in carrying oneor more sequences of one or more instructions to processor 604 forexecution. For example, the instructions may initially be carried on amagnetic disk of a remote computer. The remote computer can load theinstructions into its dynamic memory and send the instructions over atelephone line using a modem. A modem local to computer system 600 canreceive the data on the telephone line and use an infrared transmitterto convert the data to an infrared signal. An infrared detector coupledto bus 602 can receive the data carried in the infrared signal and placethe data on bus 602. Bus 602 carries the data to main memory 606, fromwhich processor 604 retrieves and executes the instructions. Theinstructions received by main memory 606 may optionally be stored onstorage device 610 either before or after execution by processor 604.

Computer system 600 also includes a communication interface 618 coupledto bus 602. Communication interface 618 provides a two-way datacommunication coupling to a network link 620 that is connected to alocal network 622. For example, communication interface 618 may be anintegrated services digital network (ISDN) card or a modem to provide adata communication connection to a corresponding type of telephone line.As another example, communication interface 618 may be a local areanetwork (LAN) card to provide a data communication connection to acompatible LAN. Wireless links may also be implemented. In any suchimplementation, communication interface 618 sends and receiveselectrical, electromagnetic or optical signals that carry digital datastreams representing various types of information.

Network link 620 typically provides data communication through one ormore networks to other data devices. For example, network link 620 mayprovide a connection through local network 622 to a host computer 624 orto data equipment operated by an Internet Service Provider (ISP) 626.ISP 626 in turn provides data communication services through theworldwide packet data communication network now commonly referred to asthe “Internet” 628. Local network 622 and Internet 628 both useelectrical, electromagnetic or optical signals that carry digital datastreams. The signals through the various networks and the signals onnetwork link 620 and through communication interface 618, which carrythe digital data to and from computer system 600, are exemplary forms ofcarrier waves transporting the information.

Computer system 600 can send messages and receive data, includingprogram code, through the network(s), network link 620 and communicationinterface 618. In the Internet example, a server 630 might transmit arequested code for an application program through Internet 628, ISP 626,local network 622 and communication interface 618. In accordance withthe invention, one such downloaded application provides for a remotedisplay device as described herein.

The received code may be executed by processor 604 as it is received,and/or stored in storage device 610, or other non-volatile storage forlater execution. In this manner, computer system 600 may obtainapplication code in the form of a carrier wave.

5.0 Extensions and Alternatives

Although specific components are recited herein as performing the methodsteps, in other embodiments agents or mechanisms acting on behalf of thespecified components may perform the method steps. Further, althoughsome aspects of the invention are discussed with respect to componentson a system, the invention may be implemented with componentsdistributed over multiple systems. Embodiments of the invention alsoinclude any system that includes the means for performing the methodsteps described herein. Embodiments of the invention also include acomputer readable medium with instructions, which when executed, causethe method steps described herein to be performed.

In the foregoing specification, embodiments of the invention have beendescribed with reference to numerous specific details that may vary fromimplementation to implementation. Thus, the sole and exclusive indicatorof what is the invention, and is intended by the applicants to be theinvention, is the set of claims that issue from this application, in thespecific form in which such claims issue, including any subsequentcorrection. Any definitions expressly set forth herein for termscontained in such claims shall govern the meaning of such terms as usedin the claims. Hence, no limitation, element, property, feature,advantage or characteristic that is not expressly recited in a claimshould limit the scope of such claim in any way. The specification anddrawings are, accordingly, to be regarded in an illustrative rather thana restrictive sense.

1. A method comprising: detecting, by a client device that is playing amedia program, a gesture with a gesture input interface of the clientdevice; in response to detecting the gesture: identifying, on the clientdevice, a time point at which the client device stops playing the mediaprogram; and sending, by the client device, a streaming request to amedia streaming device to stream at least a portion of the media programto a second client device, wherein at least the portion of the mediaprogram includes media content starting from the time point at which theclient device stops playing the media program.
 2. The method as recitedin claim 1, wherein the second client device is identified, among one ormore client devices other than the client device, by the client devicebased on a direction of the gesture, and wherein the request indicatesthe second client device to the streaming device.
 3. The method asrecited in claim 1, wherein the second client device is identified,among one or more client devices other than the client device, by themedia streaming device, and wherein the request does not indicate thesecond client device to the streaming device.
 4. The method as recitedin claim 1, wherein the media program is being streamed to the clientdevice by the media streaming device when the gesture is detected by theclient device.
 5. The method as recited in claim 1, wherein the mediaprogram is not being streamed to the client device by the mediastreaming device when the gesture is detected by the client device. 6.The method as recited in claim 1, wherein the streaming request alsorequests the media streaming device to stream at least the portion ofthe media program to a third client device other than the client deviceand the second client device.
 7. The method as recited in claim 1,wherein the client device is playing the media program in a specificplaying mode, and wherein the streaming request sent by the clientdevice to the media streaming device indicates the specific playingmode.
 8. The method as recited in claim 7, wherein the specific playingmode represents one of one or more normal playing modes, one or morefast forward playing modes, or one or more rewind playing modes.
 9. Themethod as recited in claim 7, further comprising causing a user commandto be sent to the second client device, wherein the user command causesthe second client device to operate in a second playing mode other thanthe specific playing mode.
 10. The method as recited in claim 1, whereinthe client device receives a different media program streamed from themedia streaming device while the media program is being streamed fromthe multimedia device to the second client device.
 11. The method asrecited in claim 1, wherein the media streaming device streams one ormore additional media programs concurrently to one or more clientdevices while the media program is being streamed from the multimediadevice to the second client device.
 12. A non-transitory computerreadable storage medium comprising instructions, which when executed byone or more processors cause performance of steps of: detecting, by aclient device that is playing a media program, a gesture with a gestureinput interface of the client device; in response to detecting thegesture: identifying, on the client device, a time point at which theclient device stops playing the media program; and sending, by theclient device, a streaming request to a media streaming device to streamat least a portion of the media program to a second client device,wherein at least the portion of the media program includes media contentstarting from the time point at which the client device stops playingthe media program.
 13. The medium as recited in claim 12, wherein thesecond client device is identified, among one or more client devicesother than the client device, by the client device based on a directionof the gesture, and wherein the request indicates the second clientdevice to the streaming device.
 14. The medium as recited in claim 12,wherein the second client device is identified, among one or more clientdevices other than the client device, by the media streaming device, andwherein the request does not indicate the second client device to thestreaming device.
 15. The medium as recited in claim 12, wherein themedia program is being streamed to the client device by the mediastreaming device when the gesture is detected by the client device. 16.The medium as recited in claim 12, wherein the media program is notbeing streamed to the client device by the media streaming device whenthe gesture is detected by the client device.
 17. The medium as recitedin claim 12, wherein the streaming request also requests the mediastreaming device to stream at least the portion of the media program toa third client device other than the client device and the second clientdevice.
 18. The medium as recited in claim 12, wherein the client deviceis playing the media program in a specific playing mode, and wherein thestreaming request sent by the client device to the media streamingdevice indicates the specific playing mode.
 19. The medium as recited inclaim 18, wherein the specific playing mode represents one of one ormore normal playing modes, one or more fast forward playing modes, orone or more rewind playing modes.
 20. The medium as recited in claim 18,further comprising causing a user command to be sent to the secondclient device, wherein the user command causes the second client deviceto operate in a second playing mode other than the specific playingmode.
 21. The medium as recited in claim 12, wherein the client devicereceives a different media program streamed from the media streamingdevice while the media program is being streamed from the multimediadevice to the second client device.
 22. The medium as recited in claim12, wherein the media streaming device streams one or more additionalmedia programs concurrently to one or more client devices while themedia program is being streamed from the multimedia device to the secondclient device.
 23. An apparatus comprising: a subsystem, implemented atleast partially in hardware, that detects, by a client device that isplaying a media program, a gesture with a gesture input interface of theclient device; a subsystem, implemented at least partially in hardware,that, in response to detecting the gesture: identifies, on the clientdevice, a time point at which the client device stops playing the mediaprogram; and sends, by the client device, a streaming request to a mediastreaming device to stream at least a portion of the media program to asecond client device, wherein at least the portion of the media programincludes media content starting from the time point at which the clientdevice stops playing the media program.
 24. The apparatus as recited inclaim 23, wherein the second client device is identified, among one ormore client devices other than the client device, by the client devicebased on a direction of the gesture, and wherein the request indicatesthe second client device to the streaming device.
 25. The system asrecited in claim 23, wherein the second client device is identified,among one or more client devices other than the client device, by themedia streaming device, and wherein the request does not indicate thesecond client device to the streaming device.
 26. The system as recitedin claim 23, wherein the media program is being streamed to the clientdevice by the media streaming device when the gesture is detected by theclient device.
 27. The system as recited in claim 23, wherein the mediaprogram is not being streamed to the client device by the mediastreaming device when the gesture is detected by the client device. 28.The system as recited in claim 23, wherein the streaming request alsorequests the media streaming device to stream at least the portion ofthe media program to a third client device other than the client deviceand the second client device.
 29. The system as recited in claim 23,wherein the client device is playing the media program in a specificplaying mode, and wherein the streaming request sent by the clientdevice to the media streaming device indicates the specific playingmode.
 30. The system as recited in claim 29, wherein the specificplaying mode represents one of one or more normal playing modes, one ormore fast forward playing modes, or one or more rewind playing modes.31. The system as recited in claim 29, further comprising causing a usercommand to be sent to the second client device, wherein the user commandcauses the second client device to operate in a second playing modeother than the specific playing mode.
 32. The system as recited in claim29, wherein the client device receives a different media programstreamed from the media streaming device while the media program isbeing streamed from the multimedia device to the second client device.33. The system as recited in claim 29, wherein the media streamingdevice streams one or more additional media programs concurrently to oneor more client devices while the media program is being streamed fromthe multimedia device to the second client device.